// JavaScript Document
var evt;
((function(a){
	//插件本体
	var kplug = function(opts){
	    opts = a.kuoqiJs.optionsInput(opts,{
            can_drag:1,
        });
		var ths = this;
		this.element = [];//待使用的元素集合
		this.event = null;
        this.can_drag = opts.can_drag;//是否允许拖拽
        this.focus_element = null;//当前操作的元素对象
		this.target_element = null;//当前对象在其他对象下
		//初始化某个元素集合
		this.bind = function(ele){
			a.kuoqiJs(ele).each(function(i,e){
				ths.element.push(e);
			});
		};

		//当前元素合集作为静态的，虽然拥有可拖拽的属性，但是无法拖拽
		this.static = function(){
            this.can_drag = 0;
        }
		
		//初始化一个元素
		this.syncItem = function(ele){
			//判定该元素是否被初始化
			if(a.kuoqiJs(ele).hasAttr('draggable')){
				return ;
			}
			//这种情况下，需要对拖动的概念进行初始化
			a.kuoqiJs(ele).prop('draggable',true);
            a.kuoqiJs(ele).attr('data-drag_id','dragid_'+ parseInt( Math.random() * Math.pow(10,6)));
			//在被拖动目标上触发的事件
			//ondragstart——即用户开始拖动元素时触发

　　　　		//ondrag -——元素正在拖动时触发
		
　　			//ondragend - 用户完成元素拖动后触发
			ele.ondragstart = function(event){
				if(ths.can_drag==0){
                    //event.preventDefault();
				    return;
                }
				ths.focus_element = event.target;
				event.target.style.opacity = "0.4";
			}
			ele.ondragend = function(event){
				event.target.style.opacity = "1";
				//console.log(ths);
				if(ths.focus_element){
				    //拥有目标对象，这个就是判定为移动成功
                    //console.log(ths);
                }
			}
			//在其他对象容器中触发的事件

　　　　		//ondragenter - 当被鼠标拖动的对象进入"其"容器范围内时触发此事件
			ele.ondragenter = function(event){
				//如果目标在可移动的属性加持下，才会显示
                if(event.target.draggable){
					event.target.style.boxShadow = "1px 1px 2px 0px";
                    ths.target_element = event.target;
                }
				 event.preventDefault();
			}
            //ondragover - 当某被拖动的对象在另一对象容器范围内拖动时触发此事件
			ele.ondragover = function(event){
				//console.log(ths);
				//console.log('当某被拖动的对象在另一对象容器范围内拖动时触发此事件');
				//if(event.target.draggable){
					//event.target.style.boxShadow = "0px 0px 2px 1px #cacaca;";
                    //ths.focus_element = null;
                //}
				event.preventDefault();
			}
            //ondragleave - 当被鼠标拖动的对象离开其容器范围内时触发此事件
            ele.ondragleave = function(event){
                if(event.target.draggable){
					event.target.style.boxShadow = "";
                    //ths.focus_element = null;
                }
				 event.preventDefault();
            }
　　　　    //ondrop - 在一个拖动过程中，释放鼠标键时触发此事件
			ele.ondrop = function(event){
				ths.event = event
				ths.desc = '在一个拖动过程中，释放鼠标键时触发此事件';
				event.target.style.boxShadow = "";
				ths.ondrop&&ths.ondrop(ths);
				event.preventDefault();
			}
		}
		//初始化同步
		this.sync = function(){
			for(var i =0;i<this.element.length;i++){
				this.syncItem(this.element[i]);	
			}	
		}
	};
	a.kuoqiJs.plugIn.register('drag',kplug);
})(this))